package cn.itcast.mq.config;

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.FanoutExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

//@Configuration
public class FanoutConfiguration {
    /**
     *      手动的去创建生成对应的queue，exchange，以及绑定Bingding
     *      以下是手动的去创建一个交换机，队列，和绑定，当存在需要创建多个队列，交换机时
     *      代码会变得繁杂，且需要敲大量的代码，人工书写，容易导致出错
     *      在后续有跟简便的办法
     */

    @Bean
    public FanoutExchange fanoutExchange(){
        return new FanoutExchange("hmall.fanout2");
    }
    @Bean
    public Queue fanoutQueue3(){
        return new Queue("fanout.queue3");
    }
    @Bean
    public Binding fanoutBinding3(Queue fanoutQueue3, FanoutExchange fanoutExchange){
        return BindingBuilder.bind(fanoutQueue3).to(fanoutExchange);
        // 小tip：在spring工程中添加了bean注解的方法都会被spring动态代理，所以本质上，使用方法获取对象
        // 首先会在ioc容器中找是否存在bean，不存在在使用方法生成
        // return BindingBuilder.bind(fanoutQueue3()).to(fanoutExchange());
    }


}
